package com.ooo.sdkdemo;


import android.app.Application;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.ooo.sdkdemo.utils.MySpinner;
import com.traceless.gamesdk.TracelessGamesApi;
import com.traceless.gamesdk.open.bean.GameRoleData;
import com.traceless.gamesdk.open.bean.PayData;


public class MainActivity extends BaseActivity implements View.OnClickListener {

    private TextView mTv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTv = findViewById(R.id.tv_main);



        //--------------------------------测试代码 无需接入 Start----------------------------------------

        /*初始化*/
        findViewById(R.id.btn_init).setOnClickListener(this);

        /*登录*/
        findViewById(R.id.btn_login).setOnClickListener(this);

        /*支付*/
        findViewById(R.id.btn_pay).setOnClickListener(this);

        /*退出(关闭)游戏弹窗*/
        findViewById(R.id.btn_exit).setOnClickListener(this);

        /*同步角色信息*/
        findViewById(R.id.btn_role).setOnClickListener(this);

        /*退出登录*/
        findViewById(R.id.btn_logout).setOnClickListener(this);




        TracelessGamesApi.getInstance().onCreate(MainActivity.this);
        sdkInit();

    }


    @Override
    public void onClick(View view) {

        int id = view.getId();

        if( id == R.id.btn_init ){
            sdkInit();
        }else if( id == R.id.btn_login ){//登录
            TracelessGamesApi.getInstance().login( );
        }else if( id == R.id.btn_role ){//同步角色信息

            // FIXME: 注意 同步角色信息 需根据类型上报  1选择服务器 2创建角色 3进入游戏 4等级提升 5退出游戏

            GameRoleData gameRoleData = new GameRoleData();
            gameRoleData.setData_type(3);//上报类型  //1选择服务器 2创建角色 3进入游戏 4等级提升 5退出游戏
            gameRoleData.setServer_id("1");// FIXME 此服务器ID 必须是当前玩家所在的游戏区服ID，不能随便乱填，否则会导致统计上的一系列问题！！ （注意：区服(必须是正整数)，没有区服，传1）
            gameRoleData.setServer_name("电信");//服务器名称
            gameRoleData.setRole_id("685321");//角色ID，一个角色同一个服ID保持唯一,长度不超过50
            gameRoleData.setRole_name("一血");//角色昵称,长度不超过50
            gameRoleData.setRole_level(10);//游戏等级
            gameRoleData.setRole_create_time( System.currentTimeMillis() );//角色创建时间(单位：毫秒，长度：10)
            TracelessGamesApi.getInstance().synchroniGameData( gameRoleData );

        } else if( id == R.id.btn_pay ){//支付
            EditText mEtPicet = (EditText) findViewById(R.id.et_picet);
            String amount=mEtPicet.getText().toString();

            PayData payData = new PayData();
            payData.setCporder(String.valueOf(System.currentTimeMillis()));//CP订单号(测试时随机六位数)
            payData.setSid("3290001");// FIXME 此服务器ID 必须是当前玩家所在的游戏区服ID，不能随便乱填，否则会导致统计上的一系列问题！！ （注意：区服(必须是正整数)，没有区服，传1）
            payData.setAmount(amount);//订单金额(单位：分)
            payData.setItem_id("10000");//商品ID(可传可不传，不传为空)
            payData.setItem_name("黄金月卡");//商品名称
            payData.setExtra("8569123654");//CP透传字段，通知CP支付结果时原样返回
            payData.setRole_id("123321");//角色的唯一ID，4.4.2版本新增的参数
            payData.setRole_name("天下无敌");//角色名，5.2.0版本新增的参数
            TracelessGamesApi.getInstance().pay( payData );
        }else if( id == R.id.btn_logout ){//退出当前登录 返回到游戏登录页面
            TracelessGamesApi.getInstance().logout();
        }else if( id == R.id.btn_exit ){//退出(关闭)游戏弹窗
            TracelessGamesApi.getInstance().gameExit();
        }

    }


    private void sdkInit(){

        TracelessGamesApi.getInstance().initSdk( mActivity, new TracelessGamesApi.SDKListener() {
            @Override
            public void onInit(int code, String msg ) {
                //CP游戏 需要SDK初始化成功之后再加载游戏资源到登录页面 在SDK初始化完成之前 请不要获取用户唯一标识 imei、imsi、android_id、mac、serial等
                if( code == 0 ){
                    mTv.setText("sdk 初始化成功");
                }else {
                    mTv.setText(String.format( "sdk 初始化失败 code:%s msg:%s" , code , msg ));
                }
            }

            @Override
            public void onLogin( String userId, String userToken ) {
                mTv.setText(String.format("登录uid:%s token:%s" , userId , userToken  ));
            }

            @Override
            public void onAccountSwitch(String userId, String userToken ) {
                /**
                 * 游戏需要退出当前账户，并回到游戏的登录界面 然后使用新的账号登录
                 */
                mTv.setText(String.format("账号切换uid:%s token:%s" , userId , userToken  ));
            }

            @Override
            public void onLogout(String userId ) {
                /**
                 * 游戏需要执行账户退出，并回到游戏的登录界面 然后再次调用sdk的login
                 */
                TracelessGamesApi.getInstance().login( );
            }

            @Override
            public void onPay(int code, String cpOrder, String msg) {

                if( code == 0 ){
                    mTv.setText("支付完成 orderId==" + cpOrder);
                }else if( code == 1 ){
                    mTv.setText("取消支付  orderId==" + cpOrder );
                }

            }

            @Override
            public void onSyncGameData(int code, String msg) {
                if( code == 0 ){
                    mTv.setText("同步成功" );
                }else {
                    mTv.setText("同步失败" );
                }
            }


        });

    }


    //监听返回键
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            TracelessGamesApi.getInstance().gameExit();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }



    /* Activity生命周期*/
    @Override
    protected void onStart() {
        super.onStart();
        TracelessGamesApi.getInstance().onStart(MainActivity.this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        TracelessGamesApi.getInstance().onResume(MainActivity.this);
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        TracelessGamesApi.getInstance().onRestart(MainActivity.this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        TracelessGamesApi.getInstance().onPause(MainActivity.this);
    }

    @Override
    protected void onStop() {
        super.onStop();
        TracelessGamesApi.getInstance().onStop(MainActivity.this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        TracelessGamesApi.getInstance().onDestroy(MainActivity.this);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult( requestCode,resultCode,data );
        TracelessGamesApi.getInstance().onActivityResult(requestCode,resultCode,data);
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        TracelessGamesApi.getInstance().onRequestPermissionsResult(requestCode,permissions,grantResults);
    }



}
